package guoanmaker.provider.helper.common.util;

import java.text.SimpleDateFormat; 
import java.util.ArrayList;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor; 
   
public class JSONTools {

	/**
	 * 用于将JAVA.SQL.TIMESTAMP 转换成JSON格式
	 * @return
	 */
	public static JsonConfig GetJsConfig()
	{
		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class,new JsonValueProcessor() {
		  //private SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
		  private SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd' 'HH:mm:ss");
		  
		  
		  public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
		    return  value == null ?"" : sd.format(value);
		  }
		  public Object processArrayValue(Object value, JsonConfig jsonConfig) {
		    return null;
		  }
		});
		return jsonConfig;
	}
	
	 
	/**
	 * 反序列化对象
	 * @param jsonStr
	 * @param objClass
	 * @return
	 */
	public static Object DeserializeJson2Obj(String jsonStr,Class<?> objClass)
	{
		 	JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(jsonStr);
		    Object obj = JSONObject.toBean(jsonObject,objClass); 
			return obj;	
			
			
	}
	
	
	/**
	 * 反序列化ARRAYLIST
	 * @param jsonStr
	 * @param objClass
	 * @return
	 */
	public static Object DeserializeJson2ArrayList(String jsonStr,Class<?> objClass)
	{
		
			JSONArray jsonArr = (JSONArray) JSONSerializer.toJSON(jsonStr);
			ArrayList  modelList = new ArrayList ();  
			 for (int i = 0; i < jsonArr.size(); i++) 
	        {   
				    Object obj = JSONObject.toBean(jsonArr.getJSONObject(i),objClass); 
				    modelList.add(obj); 
	        }     
	        return modelList; 
	}
	
	
	/**
	 * 对象序列化
	 * @param obj
	 * @return
	 */
	public static String serializeObj(Object obj)
	{
		return    JSONObject.fromObject(obj).toString();  
	}
	
	/**
	 * 列表序列化
	 * @param obj
	 * @return
	 */
	public static String serializeArray(Object obj)
	{
		return  JSONArray.fromObject(obj).toString();  
	}
	
	
	
}
